package util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Util para manipulação de REGEX baseado em padrões de email;
 * 
 * @author Maciel Melo (contato@macielmelo.eti.br)
 * @since 09/11/2013
 * @see macielmelo.eti.br
 */
public class EmailUtil {

	private static Pattern pattern;
	private static Matcher matcher;
	private static final String PADRAO = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
			+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";

	private EmailUtil() {

	}

	/**
	 * @param email
	 *            String no padrão *@*.*
	 * @return True se a string segue o padrão ou False se não seguir
	 * 
	 */
	public static Boolean isValido(final String email) {
		pattern = Pattern.compile(PADRAO);
		matcher = pattern.matcher(email);
		return matcher.matches();
	}

	/**
	 * Se o email for válido, retorna apenas o dominio dele. Caso contrário, vai
	 * retornar um nulo
	 * 
	 * @param email
	 * @return retorna o dominio do email no formato @*.*
	 * @exemplo maciel.dev@gmail.com -> @gmail.com
	 * 
	 */
	public static String getDominioEmail(String email) {
		return isValido(email) ? email.substring(email.indexOf('@')) : null;
	}

	/**
	 * Se o email for válido, retorna apenas o usuário dele. Caso contrário, vai
	 * retornar um nulo
	 * 
	 * @param email
	 * @return maciel.dev@gmail.com -> retornará maciel.dev
	 * 
	 */
	public static String getEmailUsuario(String email) {
		return isValido(email) ? email.substring(0, email.indexOf('@')) : null;
	}
}
